package com.cy.store.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

/**
 * @author Luo Sheng
 * @school YiBin university
 * @create 2022-12-15 21:31
 */
@Slf4j
@Component // 将当前类的创建使用维护交由springBoot容器来维护
@Aspect // 将当前类标记为切面类
public class TimerAspect {
    @Around("execution(* com.cy.store.service.impl.*.*(..))")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        // 目标方法之前
        long start = System.currentTimeMillis(); // 记录开始时间

        Object result = pjp.proceed(); // 调用目标方法

        long end = System.currentTimeMillis(); // 记录结束时间

        log.info("耗时{}ms",end - start);
        // 目标方法之后
        return result;
    }

}
